package com.learn.regex;

import java.util.regex.Pattern;

/**
 * 功能：正则表达式学习
 *
 * @author wsh
 * @date 2020/9/11
 */
public class RegexLearn {
    /**
     * 特殊字符
     * 注意：-放在开头/结尾无需转义，放在中间需要转义（否则编译都通不过）
     */
    public static final String REGEX_STR_SPECIAL = "[-`~!@#$%^&*()_+=|{}':;'\",\\[\\].<>/?·~！@#￥%……&*（）——+|{}《》【】‘；：”“’。，、？]";
    public static final Pattern PATTERN_STR_SPECIAL = Pattern.compile(REGEX_STR_SPECIAL);
    /**
     * 日期（尽量用 Java 的格林日历判断吧：使用正则判断很容易找到漏洞，而且很难读懂也增加了维护成本。再说有特定的日历类不用也是浪费啊）
     * - 无法给定单组数字范围，比如输入 0000 年
     * - 无法判断是否闰月
     */
    public static final String REGEX_DATE = "\\d{4}(\\-|\\/|.|年)\\d{1,2}(\\-|\\/|.|月)\\d{1,2}(日)?";

    public static void main(String[] args) {
//        System.out.println("去掉特殊字符：" + PATTERN_STR_SPECIAL.matcher("2020-01").replaceAll(""));
        System.out.println("是否日期：" + "2020-01-01".matches(REGEX_DATE));
        System.out.println("是否日期：" + "2020/01/01".matches(REGEX_DATE));
        System.out.println("是否日期：" + "2020年01月01日".matches(REGEX_DATE));
    }
}
